#include <iostream>

int josephus(int n, int k) {
    int last = 0; // 记录最后剩下的人的编号
    for (int i = 2; i <= n; i++) {
        last = (last + k) % i; // 计算下一个人的位置
    }
    return last + 1; // 返回最后剩下的人的编号（因为数组是从0开始的）
}

int main() {
    int n = 50; // 总人数
    int k = 23; // 报数上限
    std::cout << "The last person standing is person number: " << josephus(n, k) << std::endl;
    return 0;
}